home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9506 / DELPHI.CD < prev    next >
Text File  |  1996-03-08  |  21KB  |  332 lines

  1.           @VDelphi 1.0@N
  2.  
  3.           @VJósda a Borlandtól@N
  4.  
  5.               A   Borland   elég  alapos   profilszûkítésen   ment  át
  6.           mostanában  -- leginkább  a programfejlesztéshez  kapcsolódó
  7.           termékvonalat igyekeztek megtartani.  A Delphi ezek  közül a
  8.           legfontosabb. A Borland  nyíltan a Visual  Basic és a  hozzá
  9.           hasonló programok versenytársának szánja.
  10.               A termék két változatban  kapható. A Delphi for  Windows
  11.           az egyszerûbb: ez viszonylag  olcsó, ára pár tízezer  forint
  12.           körül  van.  A  másik  a  Delphi  Client/Server  Edition, ez
  13.           körülbelül 2000  dollárba kerül.  A két  verzió között  az a
  14.           legfontosabb  különbség,  hogy  a  Client/Server  Editionnel
  15.           képesek  vagyunk  SQL-en  keresztül  komoly   kliens-szerver
  16.           szervezésû adatbázisokhoz  csatlakozni. Mindkét  változatban
  17.           benne  van  sok programozási  segédeszköz  (Turbo Assembler,
  18.           Turbo  Debugger,  stb.)  és  a  ReportSmith jelentésgeneráló
  19.           program 2.5-ös verziója.
  20.               Ami a legfontosabb: a Delphi kitûnô vizuális programozói
  21.           lehetôségeket  nyújt.  E  lehetôségek  persze  kimerülnek  a
  22.           kezelôfelület létrehozásánál. Az ezen túlmutató  feladatokat
  23.           a Delphi alapnyelvében,  az eredetihez képest  néhány nagyon
  24.           fontos   bôvítéssel  kiegészített   Object  Pascalban   kell
  25.           megoldani.  E  bôvítések  között  olyanok  vannak,  mint   a
  26.           kivételkezelés, futásidejû típusmegállapítás és az összetett
  27.           típusú  visszatérési  értékek.  A  Delphi  nem  interpretált
  28.           p-kódra alapuló, futtató DLL-hez kötött kódot generál, hanem
  29.           Pascal  forrást,  majd  abból  az  egyik  leggyorsabb létezô
  30.           fordítóval  valódi,  önmagában végrehajtható  EXE  file-t. A
  31.           keletkezô program így akár tízszer -- vagy talán hússzor  is
  32.           -- gyorsabb lehet a megfelelô Visual Basic programnál.
  33.  
  34.  
  35.           @VAz Object Pascal@N
  36.  
  37.               A  rendszer  mûködésének  megértéséhez  szükség  van  az
  38.           Object Pascal  nyelvnek és  delphis bôvítéseinek  alapszintû
  39.           ismeretére.  Fontos tudni,  hogy a  Delphi teljes  egészében
  40.           objektumorientált  fejlesztôi környezetet  az Object  Pascal
  41.           nyelvvel  nagyon  szorosan integrálták,  a  nyelv különleges
  42.           bôvítései pedig  sokszor kifejezetten  szükségesek a  Delphi
  43.           megfelelô   mûködéséhez.   A   következô   néhány   bekezdés
  44.           összefoglalja a nyelv néhány fontosabb lehetôségét.
  45.               A  Delphi   szerint  a   kezelôfelületünk  objektumokból
  46.           (komponensekbôl)  áll, ezeknek  vannak olyan  tulajdonságai,
  47.           amelyeket      az      Object      Inspectoron     keresztül
  48.           megváltoztathatunk.   Amikor   elkezdünk   létrehozni  saját
  49.           komponenseket,  láthatjuk,  hogy  --  a  C++-hoz  hasonlóan,
  50.           ugyanakkor   a  fejlesztôi   környezet  sajátos   igényeihez
  51.           igazítva -- az  objektummezôknek négy elérési  osztálya van:
  52.           private,  protected,  public  és  published.  Az  elsô három
  53.           jelentése  teljesen  C++-szerû  (private:  csak  az objektum
  54.           saját   mezôin  belül   elérhetô;  protected:   leszármazott
  55.           osztályú   objektumokon   belülrôl   is   elérhetô;  public:
  56.           akárhonnan elérhetô). A published direktíva teszi  láthatóvá
  57.           az  adott  mezôt  az  Object  Inspector  számára,   valamint
  58.           futásidejû típusellenôrzést kapcsol hozzá.
  59.               Az  objektummodell  a  Turbo  Pascal  régebbi verzióihoz
  60.           képest sokat  változott: mivel  minden új  típusú objektum a
  61.           heapen  képzôdik,   nincs  szükség   rájuk  mutató   pointer
  62.           deklarálására,  így   alapértelmezéssé  vált   a  referencia
  63.           szemantika.  Az  új  típusú  osztályoknak  mindig  van   egy
  64.           alapértelmezett ôse (TObject). ùjdonságnak számítanak még  a
  65.           már  említett  protected és  published  elérési szintek,  az
  66.           osztályhoz  tartozó  tagfüggvények (hasonlóak  a  C++ static
  67.           tagfüggvényeihez),   virtuális    konstruktorok(!)   és    a
  68.           tulajdonságok (properties).
  69.               A  nyelv lehetôvé  teszi a  C++-hoz hasonló  strukturált
  70.           kivételkezelést  is.  Ez  azt  jelenti,  hogy  egy kivételes
  71.           állapot bekövetkeztekor  egy kivétel  lép fel,  a kivétel  a
  72.           program struktúrájában blokkonként halad kifelé és megkeresi
  73.           a legbelsô olyan  kivételkezelôt, amely képes  ôt lekezelni.
  74.           Lassúsága  miatt  leginkább hibakezelésre  használható  ez a
  75.           mechanizmus,  semmiképpen  nem  ajánlható  mondjuk  ciklusok
  76.           megszakítására.  A  kivételkezelés  itt  is  try-blokkokból,
  77.           kivételkezelô  listából  és  egy  végsô  megoldás  esetleges
  78.           megadásából áll.
  79.               Kihasználhatjuk    az    Object    Pascal     futásidejû
  80.           típusmegállapítási lehetôségeit is. Ez két esetben is nagyon
  81.           hasznos    lehet:    perzisztens    objektum     mechanizmus
  82.           létrehozásakor és  olyankor, amikor  alkalmazkodni kell  egy
  83.           nem túl jól megtervezett osztálystruktúrához.
  84.               Az  Object  Pascal  ezenkívül  rendelkezésünkre   bocsát
  85.           referenciákat és nyitott tömböket, annak a lehetôségét, hogy
  86.           egy   tömböt   egyszerûen   (C-szerûen)  inicializálhassunk,
  87.           valamint  a  C++  tiszta  virtuális  függvényeihez   hasonló
  88.           teljesen   absztrakt   tagfüggvényeket   (olyan    virtuális
  89.           tagfüggvények, melyeket  az ôket  definiáló osztályon  belül
  90.           nem implementálunk). Ezeket használva eljutunk az  absztrakt
  91.           osztályokig -- ezek olyan osztályok, amelyeknek nem léteznek
  92.           példányai. Persze a többszörös öröklôdés nélkül az absztrakt
  93.           osztályok jelentôsége  nagymértékben lecsökken,  hiszen ezek
  94.           pont  egy  absztrakt  protokollrendszert  vannak  hivatva --
  95.           általában  --  definiálni,  protokollrendszereknek megfelelô
  96.           dolgok  pedig nem  léteznek Object  Pascalban, csak  némileg
  97.           pótolhatók futásidejû típusinformáció használatával.
  98.               Láthatjuk, hogy  a Delphi  által használt  Object Pascal
  99.           sokban  hasonlít a  C++-ra, valószínûleg  éppen azért,  mert
  100.           szeretnék  részben  ezt  a  piacot  is  megcélozni  vele.  A
  101.           legfontosabb  --  sokszor  nagyon  zavaró  --  hiányosság  a
  102.           többszörös öröklôdés (vagy protokollrendszerek) hiánya, amit
  103.           némileg  ellensúlyozhat a  futásidejû típusmegállapítás,  de
  104.           nagyon  sok  elegáns  megoldástól fosztja  meg  ez  a komoly
  105.           hiányosság a programozót. Persze tekintetbe kell vennünk azt
  106.           is,   hogy   a  program   nem   bonyolult  objektumorientált
  107.           rendszerek    létrehozására    szolgál,    hanem   windowsos
  108.           alkalmazások   gyors   fejlesztésére,   amihez   a  vizuális
  109.           programozási eszközök hatékony támogatást nyújtanak.
  110.  
  111.  
  112.           @VVizuális programozás@N
  113.  
  114.               A  Delphi  vizuális  programozási  lehetôségei kitûnôek,
  115.           egyértelmûen meghaladják az  összes ilyen jellegû  termékét.
  116.           Ez persze nem  jelenti azt, hogy  nem fogják túlhaladni,  de
  117.           jelenleg  egymagában képviseli  a vizuális  eszközök egy  új
  118.           generációját.
  119.               A program elsô elindítása után -- ha még nem alakítottuk
  120.           át teljesen szájízünk  szerint -- négy  ablak jelenik meg  a
  121.           képernyôn.  A  képernyô  tetején  látható  központi  ablakon
  122.           keresztül érhetjük el a Delphi összes lehetôségét. A második
  123.           az  úgynevezett   Object  Inspector   (objektumvizsgáló).  A
  124.           maradék kettô takarja egymást: az egyikben a kezelôfelületet
  125.           szerkeszthetjük, a másikban programunk egy egységének Object
  126.           Pascal forrása látható.
  127.               A kezelôfelület egységeit úgynevezett formokra tagoljuk.
  128.           Egy ilyen egységhez tartozik általában egy  programfordítási
  129.           egység  (Delphi  unit  --  nagyon  hasonlít  a  Turbo Pascal
  130.           unitokhoz). A Delphi  kétirányú eszközeinek (two-way  tools)
  131.           segítségével  a  kód és  az  objektum általában  szinkronban
  132.           marad,  ezt  egy  nagyon  gyors  és  nagymértékben hibatûrô,
  133.           háttérben  futó  fordítóprogrammal  érték  el.  Jellemzô   a
  134.           Delphire, hogy bármit, amit vizuális eszközökkel meg  tudunk
  135.           csinálni, meg tudunk  csinálni Pascal programmal  is, szinte
  136.           ugyanolyan    egyszerûen.    Ezt    az    egyszerûséget   az
  137.           objektumorientált  struktúrának  köszönhetjük.  Jellemzô rá,
  138.           hogy egy MDI alkalmazás, amely Borland C++ 4.5  AppExperttel
  139.           generálva  40 Kbyte  C++ forrás  lesz (ezenkívül  110  Kbyte
  140.           ""egyéb" dolog), Delphi alatt körülbelül 250 sor.
  141.               A   Delphi   központi   ablakában   egy   menüsort,  egy
  142.           vezérlôpanel-részt  és  az  úgynevezett  komponens  palettát
  143.           láthatjuk. Az elsô kettônek teljesen szokásos a  használata,
  144.           míg a komponens paletta a használható objektumokat jelképezô
  145.           ikonsorokból áll, errôl húzogathatjuk a formokra a használni
  146.           kívánt   dolgokat.   Minden   objektumhoz   tartozik  néhány
  147.           tulajdonság  (property),  ezeket  módosíthatjuk  az   Object
  148.           Inspectorral.   A   komponensek   méretét,   elhelyezkedését
  149.           egymáshoz  és a  form aktuális  méretéhez viszonyítva,  vagy
  150.           abszolút méretekkel  is megadhatjuk  -- e  jellemzôket is  a
  151.           tulajdonságokon keresztül határozzuk meg.
  152.               A komponensek közül  nem mindegyik látható  vagy jelenik
  153.           meg a form ablakában teljes méretében (nem látható komponens
  154.           például egy adatforrás, nem jelenik meg egy  beállítóablak).
  155.           Ezeknek persze ugyanúgy vannak változtatható tulajdonságaik,
  156.           mint látható rokonaiknak.
  157.               Amikor  végrehajtunk  valamilyen  mûveletet  egy   éppen
  158.           látható komponensen  (megnyomjuk rajta  az egér  bal gombját
  159.           stb.)  vagy  valamilyen  más  esemény  (idôzítôesemény stb.)
  160.           történik,  egy úgynevezett  eseménykezelô szubrutin  hívódik
  161.           meg.   A   komponensekhez   köthetô   eseményeket    illetve
  162.           eseménykezelôket    szintén    az    Object     Inspectorral
  163.           vizsgálhatjuk meg illetve hozhatjuk létre.
  164.               Jól érzékelhetô a háttérbeli fordítóprogram mûködése  az
  165.           Object  Inspector  használatakor:  egy  új  eseménykezelô  a
  166.           deklarálása  után  rögtön  megjelenik  az  Object  Inspector
  167.           menüiben.  Ez  az  egyik  hely,  ahol  a  Delphi  egy kicsit
  168.           megkeverhetô:  ha  kitöröljük az  alapbeállítás  szerinti --
  169.           Delphi   által    generált   --    eseménykezelô   szubrutin
  170.           deklarációját illetve definícióját, az Object Inspector  ezt
  171.           nem  veszi  észre. Persze  ez  az állapot  csak  a következô
  172.           fordításig tart,  ekkor a  Delphi megkérdi,  törölje-e a  rá
  173.           vonatkozó hivatkozásokat? Ha igennel válaszolunk, a  program
  174.           lefordul,  ha   nemmel,  akkor   futásidejû(!)  hibaüzenetet
  175.           kapunk: az eseménykezelô nem inicializálható.
  176.               Egy újabb érdekes jellemzôje  a Delphinek a cut  & paste
  177.           funkció megvalósítása. Próbáljuk ki a következôt: válasszunk
  178.           ki  egy   kezelôfelület-elemet  (komponenst)   egy  form-on,
  179.           másoljuk  be  a  vágólapra,  majd  onnan  másoljuk  ki   egy
  180.           szövegszerkesztôbe.  Megjelenik   az  objektum   definíciója
  181.           szövegesen,   valahogy   így   (vigyázzunk,   sehol    nincs
  182.           pontosvesszô!):
  183.               object Komponensnév: KomponensOsztály
  184.                 Tulajdonság1 = Érték1
  185.                 Tulajdonság2 = Érték2
  186.                 ...
  187.               end
  188.  
  189.               Az  érdekes  az,  hogy  az  ilyen  szerkezetû   szöveget
  190.           visszamásolhatjuk a form-ra,  így megjelenik ott  a kérdéses
  191.           objektum. (Például: elindítjuk  a notepad-et, beírjuk,  hogy
  192.           ""object Button1: TButton end", kiválasztjuk ezt a szöveget,
  193.           bemásoljuk  a  vágólapra  majd  onnan  egy  form-ra  -- íme,
  194.           megjelenik egy Button1 nevû gomb.)
  195.               A   Delphinek   persze  rengeteg   érdekes   és  hasznos
  196.           tulajdonsága   van   még,   ezek   legtöbbje   a    rendszer
  197.           alapkoncepciójából és az Object Pascalhoz való nagyon szoros
  198.           kötôdésébôl ered.
  199.               Sok  más  dolog  is  segíti  a  fejlesztést:  az  Object
  200.           Browserrel  például grafikus  formában tanulmányozhatjuk  az
  201.           osztályhierarchiát.         Megvizsgálhatjuk,         milyen
  202.           tulajdonságokkal,   private,   protected,   public   illetve
  203.           published felülettel rendelkezik  az osztály, melyik  milyen
  204.           új  tulajdonságokat  hoz  be  az  osztálystruktúrába. Nagyon
  205.           hasznos, ha például azt a közös ôst keressük, amelyik  behoz
  206.           egy új tulajdonságot az öröklôdési hierarchiába.
  207.               Ehhez kapcsolódik, hogy  problémákat okozott a  Vizuális
  208.           Komponens Könyvtár (Visual Component Library) helyenként nem
  209.           túl  következetes  megtervezése:  sokszor  elôfordul,   hogy
  210.           ugyanolyan nevû tulajdonságokat  nem közös ôstôl  örököl két
  211.           rokon osztály, hanem saját maguk vezetik be,  megakadályozva
  212.           ezzel  az  objektumorientált  tervezés  teljes kihasználását
  213.           (ilyen például sokhelyütt a Font vagy a Color  tulajdonság).
  214.           Ez  legtöbbször  a többszörös  öröklôdés  hiányára vezethetô
  215.           vissza, de  az osztálykönyvtár  átgondoltabb megtervezésével
  216.           (ami    valószínûleg    mélyebb    öröklôdési     struktúrát
  217.           eredményezett volna)  is sokat  el lehetett  volna érni.  Ez
  218.           persze még nem túl nagy probléma, de egy ilyen nagy,  fontos
  219.           és valószínûleg nagyon aktívan bôvített osztálykönyvtár  nem
  220.           írható  át  anélkül,  hogy  kisebb-nagyobb   kompatibilitási
  221.           problémák ne jelentkeznének -- kis kompatibilitási  probléma
  222.           pedig nem létezik egy széles körben használt dolognál.
  223.               A többszörös öröklôdés megvalósításának az  elhalasztása
  224.           tehát azt a veszélyt  hordozhatja magában, hogy a  VCL egyre
  225.           bonyolultabbá  és áttekinthetetlenebbé  válik, késôbb  pedig
  226.           azért nem  írható át,  mert már  túl sokan  használják. Ez a
  227.           probléma a forráskód  elérhetôségével némileg lecsökken,  de
  228.           még mindig érzékelhetô lehet.
  229.               A  VCL  ebben  a formájában  és  ilyen  mérettel-- ,  az
  230.           említett  probléma  ellenére  is  --  teljesen   elfogadható
  231.           struktúrájú. Funkcionalitása iránt sem emelhetô sok  kifogás
  232.           --   megtalálhatunk   benne   nagyon   sok   mindent:  elôre
  233.           elkészített     dialógusokat,     hasznos     és     érdekes
  234.           kezelôfelület-objektumot.  Nagyon   egyszerûen  és   gyorsan
  235.           bôvíthetô, a Delphin belülrôl.
  236.               A  komponenseken  kívül  szakértôk  (experts)  és minták
  237.           (templates)  segítik a  munkánkat. Ha  megnézzük az  Options
  238.           menü  Gallery  pontját,  látjuk,  hogy  szakértôket, illetve
  239.           mintákat    csinálhatunk   formok    és   egész    projektek
  240.           létrehozásának  meggyorsítására.  A  Delphi  tartalmazza egy
  241.           expert  teljes forráskódját,  ebbôl könnyen  megtanulhatjuk,
  242.           hogyan kell ilyent készíteni. Tulajdonképpen képesek vagyunk
  243.           a rendszert  az összes  fontosabb pontján  nagyon rugalmasan
  244.           bôvíteni. A nyelv nagyfokú általánossága miatt ez egy nagyon
  245.           gyors, hatékony, rugalmas és elegáns programozói eszköz.
  246.  
  247.  
  248.           @VA fejlesztôi környezet@N
  249.  
  250.               A fejlesztôi környezetrôl a vizuális programozás kapcsán
  251.           -- a két  egység igen szoros  kapcsolata miatt --  már sokat
  252.           elmondtam. Ezeken  kívül is  akad azért  még említésre méltó
  253.           dolog: szólni kell a súgórendszerrôl, a használhatóságról és
  254.           a programozást segítô, nem szigorúan vizuális eszközökrôl.
  255.               A súgórendszer a  megszokott Borland színvonalú:  nagyon
  256.           jó. Rajta keresztül a Delphi minden vonását  megtanulhatjuk,
  257.           csakúgy,  mint az  Object Pascal  használatát. Nagyon  jó  a
  258.           helyzetfigyelô súgó, szinte mindig arról kapok  információt,
  259.           amirôl  szeretnék.  Néhány  Interaktív  Tanító  (Interactive
  260.           Tutor) is segíti az ismerkedést a Delphivel.
  261.               Használhatóság:    láthatóan    nagyon    sok   energiát
  262.           fordítottak a  vizuális eszközök  használhatóságára. Például
  263.           az Object Inspector  az eseménykezelôket kettôs  kattintásra
  264.           létrehozza, vagy ugyancsak kettôs kattintásra kiválasztja  a
  265.           következô  lehetséges  tulajdonság értéket.  A  nem vizuális
  266.           eszközök --  leginkább a  szövegszerkesztô --  használatával
  267.           problémáim  voltak: a  rendszer többi  részéhez képest  igen
  268.           keveset  tud,  tulajdonképpen  semmivel  se  többet,  mint a
  269.           Borland Pascal szövegszerkesztôje.
  270.               Harmadszor, a programcsomag tartalmaz egy Pascal  nyelvû
  271.           nyomkövetôt és egy  assemblert. Hozzátartozik még  persze az
  272.           elengedhetetlen    WinSpector    és    WinSight,    ezek   a
  273.           kezelôfelület-objektumok     fejlesztésénél     használhatók
  274.           leginkább.
  275.               Összességében a fejlesztôi  környezet jól illeszkedik  a
  276.           Delphi koncepciójához, legtöbb részében jól ki van  dolgozva
  277.           és általában nagyon jól használható.
  278.  
  279.  
  280.           @VKliens-szerver rendszerek@N
  281.  
  282.               Mint már említettem, a rendszer két változatban kapható.
  283.           A   Delphi   Client/Server  változata   révén   a  megfelelô
  284.           kezelôfelület-objektumokon    keresztül    olyan   adatbázis
  285.           szerverekhez  kapcsolódhatunk,  amelyeken  például   Oracle,
  286.           Sybase, Microsoft SQL  Server, Informix vagy  InterBase fut.
  287.           Ezenkívül   van   egy   egyfelhasználós   lokális  InterBase
  288.           szervere,  támogatja   a  fejlesztôi   csoportokban  végzett
  289.           munkát, és tartalmazza a  Visual Query Buildert, valamint  a
  290.           VCL forráskódját.
  291.               A   Client/Server   verzióban   található    ReportSmith
  292.           természetesen az SQL verziós. Ezzel a programmal  hatékonyan
  293.           állíthatók  össze   jelentések.  Ezek   olyan  adatbázisokra
  294.           alkalmazhatók,    amelyeket    a    Delphivel    együtt   is
  295.           használhatunk.
  296.               A Client/Server változattal készített EXE file-ok minden
  297.           további, Borland iránti kötelezettség nélkül adhatók tovább.
  298.  
  299.  
  300.           @VÖsszkép@N
  301.  
  302.               A  Delphire  jellemzô,  hogy  az  embernek  elsô látásra
  303.           tetszik,  és  ahogy  egyre  többet  tudunk  meg  róla, egyre
  304.           szimpatikusabbá válik. Kitûnôen van megtervezve a  rendszer,
  305.           nagyon  rugalmas,  hiszen  mi  is  megírhatunk  mindent   --
  306.           szakértôket,        mintákat,        komponenseket        és
  307.           tulajdonságszerkesztôket. Készíthetünk  ezen kívül  DLL-eket
  308.           és  VBX-eket  is,  mindezeket  a  Delphin  belülrôl. Képessé
  309.           tették arra is,  hogy sima DOS-os  alkalmazásokat csináljunk
  310.           vele  (persze így  csak egyszerû  Object Pascal  fordítóként
  311.           használhatjuk,   vizuális   lehetôségek   nélkül   --    bár
  312.           készíthetünk  DOS-os  komponenskönyvtárakat  is...)  A   VCL
  313.           támogatja a Microsoft legújabb fejlesztéseit (OLE 2.0,  DDE,
  314.           MAPI,  ODBC),  és  több   mint  70  alap  komponenst   nyújt
  315.           számunkra.  Hardverigénye  ennek  ellenére  sem  túl  magas:
  316.           mindössze egy olyan PC kell neki, melyen Windows 3.1 fut, és
  317.           van benne  legalább 6  (a Client/Server  Editionhöz 8) Mbyte
  318.           memória.  A  merevlemezen  30  illetve  50  Mbyte-ot foglal.
  319.           Összességében tehát megérdemli  a róla sok  helyen kialakult
  320.           jó véleményt.
  321.  
  322.           @KÉder Géza@N
  323.  
  324.  
  325.           @<9506\DEBUG.GIF>■■@N  A Delphi 3GL nyomon követesi módszerei
  326.  
  327.           @<9506\GALLERY.GIF>■■@N  Minták és szakertôk gazdag választéka
  328.  
  329.           @<9506\INDUL.GIF>■■@N  A Delphi indítas után
  330.  
  331.           @<9506\OBJBR.GIF>■■@N  Az Object Browser
  332.